package ipdesk.model.notice.dao;

import ipdesk.model.notice.bean.NoticeBean;
import ipdesk.model.report.promote.bean.PromoteInfoBean;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;
import com.opensymphony.xwork2.ActionContext;

import ecg.util.SessionUtils;

public class NoticeImpl extends SqlMapDaoTemplate implements INotice
{
		
	public NoticeImpl(DaoManager manager)
	{
		super(manager);	
	}
	
	/**
	 * 공지사항 등록
	 * 
	 */
	public int noticeReg(NoticeBean noticeBean) throws Exception
	{
		int lastNoticeSeq = 0;
		
		
		noticeBean.setUserSeq(Integer.parseInt(SessionUtils.getLoginSession().get("userSeq")));
		
		
		// iBatis 연동. 데이터 insert.
		lastNoticeSeq = ((Integer)this.insert("notice.noticeInsert", noticeBean)).intValue();
		
		return lastNoticeSeq;
	}
	
	/**
	 * 파일 등록
	 * @param noticeBean
	 */
	public void insertFileData(NoticeBean noticeBean)
	{
		// iBatis 연동. 데이터 insert.
		this.insert("notice.noticeFileInfoInsert", noticeBean);
	}
	
	/**
	 * 전체 데이터 갯수 가져오기
	 */
	public int getDataTotalCount(NoticeBean noticeBean) throws Exception
	{
		Map map = new HashMap();
		map.put("userSeq", SessionUtils.getLoginSession().get("userSeq"));
		
		int totalDataCount = ((Integer)this.queryForObject("notice.noticeTotalcount", map)).intValue();
		
		return totalDataCount;
	}
	
	/**
	 * 공지사항 전체 데이터를 가져오는 메서드.
	 * 
	 */
	public List<NoticeBean> getPagingDataList(Map map)
	{
		
		List<NoticeBean> pageDataList = this.queryForList("notice.noticePageDataList", map);
		
		return pageDataList;
	}
	
	/**
	 * 조회수 업데이트.
	 */
	public void updateReadCount(int noticeSeq, String queryId)
	{
		this.update(queryId, noticeSeq);
	}
	
	/**
	 *  해당 noticeSeq의 하나의 로우 데이터를 가지고온다.
	 *  
	 */
	public NoticeBean getDataOneRow(int noticeSeq, String queryId)
	{
		NoticeBean noticeBean = (NoticeBean)this.queryForObject(queryId, noticeSeq);
		
		return noticeBean;
	}
	
	/**
	 * 해당 noticeSeq의 하나의 로우를 삭제한다.
	 */
	public void deleteDataOneRow(int noticeSeq,  String queryId)
	{
		this.delete(queryId, noticeSeq);
	}
	
	/**
	 * 해당 noticeSeq의 하나의 로우를 업데이트 한다.
	 * @param noticeBean
	 * @param queryId
	 * @return
	 */
	public int noticeUpdate(NoticeBean noticeBean, String queryId)
	{
		int result = this.update(queryId, noticeBean);
		
		return result;
	}
}
